package com.doit.day01;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Random;
import java.util.Scanner;

/**
 * 练一练：模拟手机验证码
 * 需求：使用redis模拟手机验证码发送，
 * 验证码有效期60s，
 * 验证验证码输入不能超过3次，超过3次今天就没机会了
 */
public class CheckPhoneNum {
    public static void main(String[] args) throws InterruptedException {
        //1.连接客户端
        JedisPool pool = new JedisPool("linux01", 6379);
        Jedis jedis = pool.getResource();
        //输入手机号，验证手机号
        Scanner sc = new Scanner(System.in);

        System.out.println("在一个月黑风高的晚上，保掏出了他的诺基亚，提示他想要进入该网站就得输入手机号，获取验证码！！！！");
        String line = sc.nextLine();
        //验证手机号
        String regex = "^((13[0-9])|(14[5,6,7,9])|(15[^4])|(16[5,6])|(17[0-9])|(18[0-9])|(19[1,8,9]))\\d{8}$";
        String phone = "13372090488";
        boolean matches = phone.matches(regex);

        if(matches){
            String code = getCode();
            System.out.println("验证码已经通过短信发送给您了,您的验证码是："+code+"，有效期60s,请抓紧时间哦！！");
            //将验证码存到redis里面去  key：手机号 value：验证码
            jedis.setex(phone,60,code);

            int count = 3;
            while (count >= 1){
                //请保输入验证码
                System.out.println("请输入您的验证码：");
                String yourCode = sc.nextLine();
                //验证你的验证码
                if(yourCode.equals(jedis.get(phone))){
                    System.out.println("开始你的学习之旅吧！！！");
                    count = 0;
                }else{
                    if(count > 1 ){
                    System.out.println("输入错了，还剩"+ --count +"次机会");
                    }else {
                        System.out.println("机会用完了！！！如过想要机会，请冲vip！！！");
                        count--;
                    }
                }
            }
        }else{
            System.out.println("手机号都写不对，学习能力太差，学不会！！！");
        }







        //2.创建验证码出来  创建0-9随机数，创建6次，然后拼接起来
        //3.打印一句话  发送
        //4.接收别人输入过来的验证码
        //5.进行验证   用户输入的验证码和我redis中存的验证码比对
        //6.输入错误，再来一次，一共3次


    }


    public static String getCode(){
        //创建一个随机数
        Random random = new Random();
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < 6; i++) {
            int num = random.nextInt(10);
            sb.append(num);
        }
        return sb.toString();
    }

}
